package com.huizhonglm.diap.core.image;

import android.graphics.Bitmap;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;
import com.bruce.common.utils.EmptyUtil;
import com.huizhonglm.diap.api.API;

/**
 * Logo加载器
 *
 * @author LiXiaoLong
 * @version 1.0
 * @since 2014-11-04 13:53
 */
public class Thumb {
	private static Thumb mInstance;

    /**
	 * 获取单例
	 *
	 * @return Thumb
	 */
	public static Thumb getInstance() {
		if (mInstance == null) {
			synchronized (Thumb.class) {
				if (mInstance == null) {
					mInstance = new Thumb();
				}
			}
		}
		return mInstance;
	}

	private Thumb() {
	}

	public  void display(ImageView iv, String url, int defDrawableId) {
        if (!EmptyUtil.isEmpty(url)) {
            ImageLoader.getInstance().displayImage(getFullURL(url), iv, getOptions(defDrawableId));
        }else{
        	iv.setImageResource(defDrawableId);
        }
	}

	public void clearMemory() {
        ImageLoader.getInstance().clearMemoryCache();
		System.gc();
	}
	
	private DisplayImageOptions getOptions(int defDrawableId) {
        return new DisplayImageOptions.Builder()
				.showImageOnLoading(defDrawableId)//设置图片在下载期间显示的图片
				.showImageForEmptyUri(defDrawableId)//设置图片Uri为空或是错误的时候显示的图片
				.showImageOnFail(defDrawableId)//设置图片加载/解码过程中错误时候显示的图片
				.cacheInMemory(true)//设置下载的图片是否缓存在内存中
				.cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中
				.considerExifParams(true)//是否考虑JPEG图像EXIF参数（旋转，翻转）
				.imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示
				.bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型
				.displayer(new SimpleBitmapDisplayer())
				.build();
	}

    private String getFullURL(String url){
        if (!url.startsWith("http://") &&
				!url.startsWith("HTTP://") &&
				!url.startsWith("file://") &&
				!url.startsWith("FILE://") &&
				!url.startsWith("content://") &&
				!url.startsWith("CONTENT://")) {

        	return API.HOST + "/" + url;
        }
        return url;
    }
}
